package main

import (
	"bufio"
	"fmt"
	"net"
	"strings"
)

func demo1() {
	// 以示例为目的，我们使用字符串构建一个带有换行符的 Reader
	input := "Hello, World!\nThis is a demo using bufio.Reader.\n"
	reader := bufio.NewReader(strings.NewReader(input))

	// 使用 ReadBytes('\n') 读取直到遇到换行符
	line, err := reader.ReadBytes('\n')
	if err != nil {
		fmt.Println("Error reading:", err)
		return
	}

	// 打印读取到的行
	fmt.Println("Read line:", string(line))
}

func demo2() {
	input := "*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n"
	reader := bufio.NewReader(strings.NewReader(input))
	bytes, err := reader.ReadBytes('\n')
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println("Read line:", string(bytes))

}

func handleConnection(conn net.Conn) {
	defer conn.Close()

	reader := bufio.NewReader(conn)

	for {
		// 读取数据直到遇到换行符 '\n'
		data, err := reader.ReadBytes('\n')
		if err != nil {
			fmt.Println("Error reading:", err)
			return
		}

		// 打印接收到的数据
		fmt.Printf("Received: %s", data)
	}
}

func main() {
	// 监听端口
	listener, err := net.Listen("tcp", "127.0.0.1:8081")
	if err != nil {
		fmt.Println("Error listening:", err)
		return
	}
	defer listener.Close()

	fmt.Println("Server is listening on :8080")

	for {
		// 接受连接
		conn, err := listener.Accept()
		if err != nil {
			fmt.Println("Error accepting connection:", err)
			continue
		}

		// 启动一个 goroutine 处理连接
		go handleConnection(conn)
	}
}
